本文内容翻译自Spelunky-Dereck Yu一书,仅供参考

建议支持作者,购买原版

Part I: Spelunky Classic

旅途的起点

当我谈起Spelunky时,我会说它是一个像Mario一样的平台游戏,无论你是否玩过电子游戏,你一定听说过马里奥,在那个平台游戏称王的年代(8090年代),马里奥是游戏的代表作。电影往往按照主题来分类,游戏则是按照玩法来分类。平台游戏的玩法是在平台间跳跃并越过障碍,射击游戏是提着枪射击目标,解谜游戏里你需要解开一些谜题。

如果你是第一次玩Spelunky,跑,跳,攻击,这些操作你会很熟悉。你出生在一个废弃金矿,可以用鞭子攻击蜘蛛,洞穴人,还能找到绳索和炸弹来探索废墟。第一次玩你很快就死了,石壁会射出暗箭,一不小心跳过了头就会戳到尖刺上,你在原地逗留了太久,一只幽灵会开始追你,又或者,你不小心被自己的炸弹炸死!在Spelunky中你只有一次生命,一旦血量耗尽,你得从头再来。

第二次玩Spelunky,你会发现这个平台游戏有些不同。在超级马里奥中,每次重新开始一个关卡,你会从同一个起点出发,遇到同一个怪物,穿过同一个水管,到达同一个终点,这一切都是完全确定的。但在Spelunky中,你会遇到不同的世界,这次你遇到的是一个装满蛇的坛子,下次遇到的是恐怖祭坛和炸弹商店,有时你出生在白天,有时候在黑夜(那时候你得拄着篝火小心前行)。游戏中的每一种生物的行为是一致的(比如蛇总是按一定频率前后移动,弓箭总是造成一样的伤害),但他们在地图中是否出现,出现在哪里却不确定。这种变化让Spelunky在平台游戏中与众不同,因此我对它完整的描述是“一个随机生成的像Mario的平台游戏。“

Spelunky深受Roguelikes的启发,尽管Roguelikes并不太出名。roguelikes这一类游戏得名于Michael Toy和Glenn Wichman在1980年发布的Top-down回合游戏”Rogue“,Mario和Sonic是优雅关卡设计和流畅技巧操控的典范,而roguelikes的随机生成地图和机制的复杂程度是相当惊人的。(最初的Rogue使用了ASCII字符集作为图形表示(@表示玩家,g表示goblin),这种传统也被带到了现代roguelikes中。)即使受到roguelikes影响的Diablo的风靡,也没能让roguelike广为人知,因为人们并没有注意到diablo背后的东西。而当我开始制作Spelunky时,roguelikes才刚刚进入游戏界的主流视野。

...

当我制作Spelunky时,我主要着眼于这三个特征,他们构成了游戏核心部分:

  1. 随机关卡生成
  2. 永久死亡(玩家只有一条生命,无法重载游戏来挽回失误)
  3. 玩家,NPC,物品共享同一套物理交互规则

你可能听说过“怪物和英雄拥有共同的规则和行为”,我把它也应用到了物品。在很多游戏里,怪物和物品是分开构建的,你可以pick up a item,你可以kick a monster,但是不能kick an item, pick a monster。而在一个roguelike游戏里,如果你完成了同样的动作,你会得到同样的结果(比如踢走一个物品,捡起一个怪物?),英雄,怪物和物品应该是一个类属的三个变体,而不是三个类属。

后来的roguelike开始加入音乐,画面和UI,“Mystery Dungeon: Shiren the Wanderer”——一个发布于Super Famicom和Nintendo DS上的日本roguelike游戏,它加入了动画,简化了玩家操作,最新的canon roguelike(ADOM,Angband,Crawl和NetHack)支持瓦片地图以及鼠标控制,2006年的一个roguelike/simulation的混合体“矮人要塞”和他们都不同,它不是更简单,而是更复杂了——通过字符渲染,模拟出比一般游戏大好几倍的奇幻世界,“矮人要塞”把roguelikes带向了光明。

“矮人要塞”有两个模式:“冒险者模式”里你控制一个角色,“要塞模式”你设计要塞,来保持矮人们的生存。你生活的要塞只是程序生成世界的一小部分,而整个世界细节非常丰富,甚至可以追溯到一个小人物一百年前的祖先。我读到过一个世界,其中的历史记载着一个NPC的故事,他的祖先在一次突袭中被哥布林绑架,因此他身上流淌着一点儿哥布林血统。这个游戏很酷的一点是冒险者模式和要塞模式可以同时游玩,你可以先构建一个要塞,然后作为冒险者访问它(也可能是一座要塞废墟,一旦你没弄好)

“矮人要塞”在当时是个有趣的新闻,因为它模拟出的世界充满了复杂性和不可控制性,人们觉得他是出自外星人之手。在DF出现不久,roguelike这个词开始在主流新闻和社交媒体中出现,我自己不觉得新鲜,因为小时候已经见过了,真正使我兴奋的是,roguelikes,这个一直封闭的生态环境,开始被外界熟知了。

Puzzle Pieces(拼图)

创造性思考就像组合一堆拼图碎片,碎片有些是别人提起的建议,有些是你甚至没玩儿过的游戏截图,或者是一段萦绕的旋律,还有一些是从生活经验中来的。一些拼图的部分已经拼好了,也许是进入脑海的时候就拼好了,也许是在散步的时候拼接起来。有时候就差一片,一旦找到它,整个拼图一下子完整起来。

积累很多碎片是很重要的,拥有很多,才有可能组合出更多,不过你必须坐下来开始筛选,组合它们,这是创造性思考的“工作”部分。有时候这工作令人沮丧,两片碎片偏偏拼不上,你想着“应该是那片儿”,但你想不起来它在哪儿,你甚至不知道它是否真的存在。不过就像任何挑战性工作那样,当你最终完成时,沮丧的感觉会让位于乐趣,喜悦和大满足。

在Spelunky之前,我的朋友Alec Holowka和我一起完成的一整个拼图叫做Aquaria,这是我的第一个商业游戏,在2年的辛苦工作之后我们发布了它(2007)。Alec是一个程序员和音乐家,我是艺术家和关卡设计者,最初的原型只是一条美人鱼在小型的水下图书馆游玩,到了游戏发布的时候,美人鱼变成了Naija,图书馆变成了一个广阔的幻想世界,她能够在其中歌唱,战斗,做饭和谈恋爱。

那年Aquaria很成功,但不是那么成功,那是在独立游戏大流行之前,是在控制台(console,PS,XBOX)独占和数字发行淘金热之前的时代,但是Aquaria已经大大超出我们的预期了,它的成功让我们能继续全职制作游戏,而玩家积极的反馈也让我们确信,我们做的东西是有价值的。

那年Aquaria赢得了IGF大奖,IGF是一个展示独立游戏的地方,像是游戏界的Sundance(展示独立电影的活动)。我本以为我们会走进一个小房间,别着小小的丝带领奖,那天我踩上红毯时大吃一惊:这根本不是什么小房间,而是旧金山莫斯克尼会议中心一个巨大的会议厅,虽然它的华丽还没有达到奥斯卡的水平,但对于我们这些总是呆在卧室开发游戏的人来说,它就是奥斯卡。在舞台的下面,是为被提名人和特别嘉宾准备的桌椅,那里有许多我们只能从书上读到的传奇人物,比如宫本茂,我们在那里坐下时所感到的震撼令我永生难忘。

大起大落的事儿在Aquaria的开发中并不少,在我们提交IGF几周之前,游戏就发生过一次剧烈的变化。充满人物,场景和对话的故事变为聚焦在Naija身上,女演员Jenna Sharpe把Najia的机器声音变得活生生的——在Jenna第一次读之后,我在休息中听到Alec的呼声“Fuck yeah!”,但是也有糟糕的时刻,由于创作方式的分歧,我们不得不踢掉Alec的一个朋友。那两年像是持续循环的增加和减少,游戏的内容如此,我们的合作者也是如此。

在这变化中,唯一不变的是Alec和我,我的妻子Frances开玩笑说,我和Alec在一起的时间超过了其他任何人。不过我们大多通过Google Talk交流,因为我住在San Francisco,而他住在Vancouver,地理距离让我们很难真正了解彼此。当我们开始全职合作Aquaria的时候,Alec是通过我之前制作的一个小项目找到的我,我们只是在网上认识。我们共同度过了许多欢乐,愚蠢和胜利的时刻,但我们也因为性格和工作风格的差异发生冲突。我总是喜欢孤独地完成我自己那部分,当内容发生交集的时候才和队友讨论,而这让更喜欢稳定交流的Alec觉得我们不像一个Team。尽管我认为自己相当努力,但是Alec有用不完的精力,我虽然尊敬这一点,但是很难跟上他的步伐。

我很庆幸Aquaria映射出我们友谊的优点和缺点,因此我虽然为Aquaria自豪,但我无法再制作一个Aquaria。当我们准备开始制作第二个游戏时,我们一致认为要做小些的游戏,但是每一个点子都迅速膨胀,变成一个大型项目,对我来说,立刻开始另一个两年项目太紧迫了,我需要慢下来,但是Alec急于再次开始工作。尽管离开一个朋友和成功的team很令人难过,但如果我不离开,我们会都备受折磨。

所以在2008年,我把Aquaria摆在一旁,一个人回到了我自己的那堆拼图前。在我面前,两堆完全不相干的拼图,平台游戏和roguelike散落着。我不知道我要做什么,我只是想做些东西,所以我拿起最近的那片碎片,开始试着把它们拼在一起。

GameMaker

在我和Alec分开之后,我决定看看GameMaker,那时候GM还是8.1,GM是一个自我包含的2D游戏制作工具,包括一系列编辑器和拖拽界面,游戏的基本功能——输入,渲染,碰撞检测都被封装好,不需要用户触及底层,因此让一个游戏运行起来是很容易的,你可以创建一个像素图片,然后立刻就能让它动起来!

虽然在GM8.1中制作Aquaria这样的大型游戏是很困难的——因为缺少Alec自制引擎的性能和功能,比如GM在默认分辨率下难以承载Aquaria一幕里那么多物体(object),但是GM的简单让他在业余开发者中非常流行。GM开发的大多是很小的游戏,图形和音乐都很接近8090年代,我喜欢这种“业余”的感觉,它们大胆的,简短,每一个作品都提供几个小时简单而纯粹的快乐,每一个游戏都散发着创作者的个性,它们都有着独特和大胆的非商业艺术和音乐,甚至是标题——Clean Asia,都让人耳目一新。

这些游戏让我想起村上春树在一本书里写的“我觉得写小说是个挑战,而写短篇小说是享受,如果写小说像种植一片森林,那么写短篇小说更像耕耘一片花园。这两件事互相补充,创造出一片大陆“。这些GM游戏就像游戏的小花园,活波,可爱,充满魅力。我刚刚和Alec一起种下一片森林,我想找到我自己的小花园。

GM也让我想起Kilk&Play,那是我用过的第一个游戏制作工具,KK在1994发布时,我12岁,想要把我的游戏想法变成现实,所以杂志上的广告吸引了我。我不久就弄出一行文字,然后做出我的第一个游戏——Topdown的双人游戏“Trigger Happy”,这个游戏很简单,但我上传到网上时特别激动,这是我的第一个游戏,也是我第一次把制作的东西放到网上。

几天后我就收到玩家发来的邮件,我十分高兴。写邮件的人不会知道,他们让一个12岁的少年爱上了制作游戏,把他推向了他的梦想。从那以后,我和我的朋友JonPerry用Klik&Play继续制作游戏,后来加入伯克利大学时,我觉得计算机本科能帮我掌握编程技能,而绘画我一直都很喜欢,因此可以在课余自学。

直到现在,编程都是制作游戏的巨大门槛,在电子游戏早期,首席程序员往往也是文字作者,艺术家和设计师,如果你能编写软件,你就可能制作游戏,至少你可以试试。如果你不会,你必须找一个会的。像Klik&Play和GM这样的软件戏剧性地改变了游戏开发的版图,让各种各样的普通人也可以制作游戏。

我觉得从这些软件中受益最多的就是我这种人,编程不是我的热情所在而是达到目的的手段,John Carmack说“Programming in the abstract sense”,真正热爱编程的人会享受编程本身的乐趣。当然解决BUG有时是一种工作的一种调剂,但是大多数时候我都只想我的代码正常运作!如果不是游戏,我对于编程兴趣很少,我在伯克利大学只有一门课得A,就是我提交了一个电子游戏。

我尝试过从头编写引擎,用一大堆书比如《tricks of game programming gurus》,为了“用正确的方式做游戏”,但是当同样的事情我在GameMaker上只要几分钟就能完成时,我就很难保持动力了。我在伯克利的每个学期都以热情和崭新的笔记本开始,不过一周后,我就开始在上面乱涂涂画画了。

毕业后,我接受了我不是正经编程的料,我不再想编写我自己的引擎了。这个重要的认知标志着我终于停止浪费时间,去成为我不是的那个人。我不再因为没能够成为”真正的Programmer“,使用”真正的编程语言"而感到羞愧和挣扎,我要投身我真正热爱的事情—制作我热爱的游戏。

我用GM编写的第一款游戏是一个简单的平台游戏。对于独自学习的业余者而言,限制你要学习的新事物的数量是至关重要的,既然我在学习使用一个新的游戏制作工具,我决定坚持我熟悉的题材。由于平台游戏十分流行,我能够找到很多用户脚本来完成基础设置和物理功能,这样我就可以专注于我最喜欢的工作:创建图像,设计关卡和编写游戏逻辑。

我发现我最有可能完成的事在三个类别的交集处:我想做的,我擅长的,我希望我做了的,“我想做的”和“我希望我做了的”听起来相似,但不是每个我能找到乐趣的游戏都是我希望完成然后发布的,反之亦然!我的平台跳跃游戏原型玩起来还可以,但只是在玩法上加了一些小东西,这让我沮丧,如果我不打算做一个大型游戏,我想要我的小型作品是特别的!

Roguelike

我只玩过一两次初版Rogue,我第一次真正的roguelike体验是Hack,Rogue的精神续作之一,一个真正的宝藏。它藏在5.25英寸硬盘里,这些硬盘在我出生之前就在了,在硬盘里存储的许多学校文件中寻找电脑游戏就像是探索地牢或者刷洗考古化石,我浏览过硬盘许多次,期望能找到什么遗漏的东西。

硬盘里的文件名对于理解这是什么游戏根本毫无帮助,“HACK.EXE“像是一个黑客软件而不是roguelike游戏,还有一个叫做Madame Fifi's Whorehouse的游戏藏在神秘但相当无辜的文件名下“FIFI.EXE”,我特别高兴,结果我发现这个妓院里什么也没有,只有一个色情物品,还无法打开。

这些游戏和硬盘引发的神秘和兴奋在今天这个信息丰富的年代是无法想象的,一些游戏是真正的经典,像HACK,还有一些游戏更像是新奇体验,比如Madame Fifi's Whorehouse,不过他们都有一种真正的冒险气息,被我年轻的热情所放大。

在那个硬盘的所有冒险中,Hack是最好的。Hack最后一个版本发布在1985年6月,任天堂发布超级马里奥前夕。这两个游戏非常不同,每一个都在不同方面让对方相形见绌。从视觉上来看,Hack像是一个老古董,单色,基于ASCII的图形,看起来就像任天堂主机卡带坏了的时候吐在屏幕上的垃圾信息,然而在“可能性空间”(Possibility space,一个电子游戏术语,用来描述在游戏规则之内可能发生的事情数量)上Hack明显更大。在Hack中你得用一组一组令人头晕目眩的命令来移动和行动,命令多到几乎要用上整个键盘,大写小写,而这些行动本身也很复杂。仅仅是简单的吃东西,Hack就超过了绝大多数游戏,吃意味着走到一个汉堡/草莓上面,玩家有5级饥饿感,从“饿晕了”到“饱腹”,你必须留心你吃的东西,因为主要食物来源是沿途杀死的怪物尸体,其中有些是有毒的。有几次,我强迫角色在饱腹的情况下吃东西,结果他噎死了,你的确可以这样做!

NetHack是Hack的继任者,加了很多新内容,比如迷人的瓦片图形。一次我遇到一个巨魔被困在钉子陷阱,巨魔不是友好的生物,虽然容易杀死,但是他们会死后复活,最好的选择是让巨魔继续被困在原地,不过不知道为什么,我觉得有必要拉他一把--用#untrap指令。巨魔获救之后,一个心形图标浮现在他头顶,他说他很感激我的帮忙——像这样的故事在NetHack中比比皆是,例如,有一个完整的破坏者页面,详细介绍了鸡冠花可以把你变成石头的所有方法,触摸这种致命生物的尸体就会使你石化,所以如果你想安全地捡起它,你需要戴上手套,不过,你为什么要拿着它呢?为了把它当做武器?但即使戴着手套也并不安全,你很容易在下楼梯的时候摔倒,或者由于你穿着被诅咒的靴子而被绊倒。游戏的可能性空间如此之大,而且每一种可能性都得到了优雅的处理,没有bug或不恰当的信息,以至于NetHack的玩家创造了一个口头禅,"开发团队考虑到了一切"。

在《Spelunky》最初发布的几年后,我在一个视频游戏大会上被问到我打通过哪些roguelike游戏,我回答说我唯一通关的是《神秘地牢》。提问者似乎对我只通关过一个roguelike游戏感到失望,而且那是一个相当容易的roguelike。不过,我从没有打通NetHack的真正原因是我没有耐心。要击败NetHack,这也被称为"升天"(爬塔,攀登),你必须下到地下45到53层获得Yendor的护身符,然后再爬上去,通过第一层,穿过四个元素界,最后到达星界,在那里你把护身符献给你所选择的神灵。在"狂人升天指南"中,作者声称"快速升天"需要大约40000个回合,这份流行的战略指南在2002年首次发布到游戏的USENET新闻页面,"没有时间限制,"他解释说,"你需要多长时间,就得花多长时间"。

升天不仅需要大量的游戏知识,而且还需要大量的乏味操作。高级别的游戏涉及到一些战术,如训练宠物为你偷窃物品或"布丁养殖",玩家需要将一种叫做黑布丁的怪物剁成两半,一遍又一遍地收集其尸体。NetHack wiki将这种玩法描述为受虐,因为它特别无聊。另一个高级技巧被称为"堆积",创造大堆的物品,用多态魔杖击打,将物品转化为不同的东西(但属于同一类别),通常被转化的物品只是无用的垃圾,但你又很小的概率会得到一些好东西,可以保留在你的 "飞升装备"中,一个飞升装备集合,这本身就是一个问题,因为这样一些装备的存在减少了玩家赢得游戏的有趣选择的数量。

问我玩过哪些roguelike的人认为Spelunky的灵感来自roguelike,这没错,我对它们很着迷,但我喜欢它们的一切?并不。事实上,有很多内容我宁愿在维基百科和游戏介绍那里读到,而不是亲身体验,就像学习中世纪历史的人可能不会真的想穿上全套盔甲一样。我喜欢的部分是随机生成的关卡和每次遇到新怪物新物品时产生的紧张感。如果你死了,你不仅仅是失去了你的角色,你还失去了为你生成的整个世界,在大多数roguelike游戏中,你不能重新加载来挽回失误。永久死亡的机制赋予了死亡更多的意义,这反过来又赋予了生存时的行动更多意义。

由于对我的平台游戏原型不感兴趣,我转向了roguelike。但在开发过复杂的Aquaria之后,我仍然被简单性和极简主义所吸引,所以我决定我的roguelike将是非常有限的,玩家只能携带九件物品,无论重量如何,而且他们对这些物品进行的操作仅限于"使用"和"扔"。我对游戏的另一个限制是,游戏中地牢的每层都是15x15的网格,和NetHack的24x80的水平相比,在这么小的空间里必须放弃那些房间之间的曲折通道,这九个房间必须像办公区的小隔间一样密集。

这似乎是合理的--尽管NetHack的大型地牢允许更多的布置,但在房间长长的走廊上花费的时间并不有趣。NetHack有一个特殊的钥匙,让你从走廊的一端"快速移动"到另一端,只有在有东西穿过你的路径时才会在中间停下来,这是一个设计。走廊通常只是走廊,而NetHack中的房间可以是很多东西。它们是类似象棋的小棋盘,里面有怪物、宝物和陷阱,但它们也可以是商店、怪物动物园或王室。有时它们是漆黑的,你必须找寻道路。

没过多久,我就停止了我的roguelike的工作。当我做了几个有敌人、陷阱和商店的普通地牢时,我遇到了与我以前的原型相同的问题--简化roguelike是件有趣的事情,但我没有添加任何新东西。因此我的思绪再次开始漂移,从我面前的这块小拼图到我的其他拼图。当我开始时,只有一大堆散落在我面前的杂乱无章的拼图,但现在有一些部分已经完成。

平台游戏和roguelikes,平台游戏和roguelikes。 我问自己,我喜欢平台游戏的原因是什么?我是一个更注重动作的游戏玩家,我喜欢它们容易控制和玩,我喜欢每一次跳跃背后的紧张感。 我不喜欢平台游戏的什么?我不喜欢反复玩同样关卡的重复性,也不喜欢依赖生硬记忆关卡布局来通关。 我喜欢roguelikes的什么?我喜欢随机生成的关卡所提供的多样性,以及死亡赋予的意义。 我不喜欢roguelikes的什么?我不喜欢某些需要成功的任务的重复性,如多角化,以及对背诵命令的依赖性。 平台游戏和roguelikes,平台游戏和roguelikes 就是它!

EXPLORER.GMK

我保存的最早的Spelunky的build(电子游戏开发用语,可以运行的文件)是在2008年6月29日,文件名是"EXPLORER.GMK",没有任何描述。当时主角Spelunky Guy的样子相比现在略有不同--标志性的矿灯帽的帽檐在两边短了一个像素,看起来更像典型的洞穴头盔,而将他的耳朵与头部其他部分区分开来的两个像素的深棕色头发不见了,一只手的阴影像素也不见了。在一个只有16x16像素大小的图片上,这些小的变化是很明显的。项目中也还有旧的平台游戏原型的残留,有粘液、地精、旅人和石像鬼原型,以及导弹精灵、机器人蜘蛛和空房间(名为 "rWestTower2")的原型。

除此之外,《Spelunky》的这个版本,虽然只有一个带有蝙蝠、钉子和箭形陷阱的关卡,但看起来和玩起来感觉上都非常接近最终版本,这也告诉我们核心设计的形成是多么快。几乎所有定义Spelunky的关键元素都已经出现在EXPLORER.GMK中。首先是随机关卡,这是游戏的一大亮点,其次,尽管你的基本鞭子攻击不可用,但你可以掏出炸弹,炸毁墙壁,创造出一些洞来让Spelunky Guy从平台上掉下来,进入下面的无限空间。

在视频游戏中,破坏场景是一件相当新颖的事情。在大多数游戏中,除了特定的场景是要被破坏的(例如,有明显裂缝的墙),背景,甚至窗户和木栅栏都是完全不受影响的,因为无敌的场景是使玩家沿着道路走下去的简单方法,而使所有的东西都可被破坏是一个耗时而严格的过程,破坏场景的一部分需要它令人信服地破碎,而且还需要在破坏后有东西供玩家互动。这就是为什么可破坏的地形在老式游戏中比在现代大型游戏中更常见的原因之一--随着游戏世界的复杂性和真实性的增加,使它们破碎的难度也在增加。

如果你在1983年碰巧住在日本,并且拥有一台夏普X1电脑,你可能玩过Kagirinaki Tatakai,这是一款不知名的侧滚动作游戏,你控制一个配备喷气背包、激光器、火箭和手榴弹的人。这款游戏最有趣的地方是,几乎所有的关卡都是完全可破坏的。虽然我自己没有玩过Kagirinaki Tatakai,但关于这款游戏的一篇文章还是激发了《Spelunky》中可破坏地形的想法。

在为网站Hardcore Gaming 101撰写的文章中,John Szczepaniak这样说道,"增加真实性的事实是,你可以实时破坏场景。它的任何部分,所有的,不,说真的。看到那个地板了吗?如果你不喜欢在敌人的迷宫中穿行,就用炸弹炸开地板,避开他们。这给游戏增加了一个巨大的战术层面,因为你可以在地板上炸洞,让敌人一个个蹦出来干掉他们,或者完全避免他们。但由于你的手榴弹是有限的,而且对通过后面的部分至关重要,你需要谨慎使用它们。"

这听起来相当酷,不是吗?可破坏的地形不仅给了玩家更多的控制权,使游戏更有沉浸感,而且还使关卡的生成更容易,因为开发者可以安全地生成被墙隔开的区域。我最终为Spelunky使用的关卡生成系统的规则之一是,在不破坏墙壁的情况下能够通过整个关卡。

另一个出现在这个build中的关键元素是Spelunky的"主题",在游戏设计术语中,它指的是我们围绕抽象规则和系统的游戏设定、故事和视觉效果。Spelunky这个名字是指洞穴,也被称为"spelunking"。最初我并不打算用作游戏的最终名称--我只是需要一个比"EXPLORER"更有趣的文件名。另一个独立开发者Phil Fish让我再次考虑使用这个名字,他说:"Spelunky,嗯?我喜欢它"。现在回想起来,不知道他是指喜欢这个名字还是喜欢这个截图,但我认为是前者。

从主题上看,Spelunky的故事源远流长,讲述的是粗犷的英雄们在茂密的丛林中探索古老的遗迹,并因为寻找宝藏和荣誉而闯进了那里原住民魂灵的安息之地。这些冒险家中最知名的是印第安纳·琼斯,这个人物是乔治·卢卡斯和史蒂文·斯皮尔伯格创造的《夺宝奇兵》四部曲的主角。80年代上映的前三部给我留下了深刻印象,特别是《夺宝奇兵》和《末日神庙》,其中有可怕的陷阱和令人毛骨悚然的人类尸体和冰冷的猴脑场景。

印第安纳·琼斯对视频游戏也有巨大影响,像《异形》影响了《魂斗罗》和《Metroid》等科幻视频游戏一样,《夺宝奇兵》启发了《Pitfall Harry》、《Rick Dangerous》、《Lara Croft》和《Nathan Drake》等数字游戏的夺宝奇兵。考虑到印第安纳·琼斯的受欢迎程度,电影对视频游戏的普遍影响,以及为名利而探索危险的废墟一直是视频游戏的流行主题时,这并不令人惊讶。

印第安纳·琼斯本身就是一个致敬的集合,它从詹姆斯·邦德以及卢卡斯和斯皮尔伯格年轻时的电影连续剧和纸质小说中获得灵感。他的造型——联邦帽、棕色夹克、卡其裤和双肩包--据说直接受到1954年冒险连续剧《印加的秘密》中查尔顿·赫斯顿扮演的哈里·斯蒂尔的影响,该剧对第一部《夺宝奇兵》的剧情也有公认的影响。他那条牛鞭呢?来自佐罗,在连续剧《佐罗再骑》中,他用它来鞭打别人手中的枪,并从窗户上扔出去。说起《夺宝奇兵》,那部电影的灵感也来自于卡通人物唐老鸭和斯库吉·麦克达克的冒险,导演卢卡斯小时候是他们的超级粉丝。在《失落的方舟》的开头,Indy从中勉强逃脱的标志性巨石陷阱和卡尔·巴克斯在1954年创作的漫画《西博拉的七个城市》中的巨石陷阱非常相似,这种相似性体现在触发陷阱的方式上--将一个神像从基座上拉下来。

这并不是说卢卡斯和斯皮尔伯格没有创意,只是说他们是冒险故事悠久传统的一部分,而《Spelunky》也是其中的一员。他们在《夺宝奇兵》中回馈的东西比他们借用的要多得多,而不是《哈利·斯蒂尔》的克隆或《佐罗》的翻版,这才是《夺宝奇兵》的魅力所在。即使是借来的东西,如果它是诚实的,带着真正的尊重和爱,也是一件好事--让新观众与老的连续剧和漫画联系起来。在某种程度上,制作、体验和与艺术互动就像参与艺术家们一直在进行的、并将在未来继续进行的长期对话。

主题是理解游戏规则的一种润滑剂,将抽象的概念与人们已经理解的具体场景建立联系,使这些概念变得生动。这方面最好的例子也许不是视频游戏,而是国际象棋。毫无疑问,国际象棋的规则本身就很美,正是这些规则使国际象棋成为如此有影响力和持久的游戏,但假如如果卒不是卒,骑士不是骑士,国王和王后不是国王和王后,只是大小不一的抽象形状,如果游戏的军事主题被完全删除,国际象棋仍是一个优雅的游戏,但不会那么引人注目。一个骑马的骑士跃过一排棋子去取国王的生命,比把一个形状从网格的一部分移到另一部分要刺激得多。棋子的人格化也使规则更容易学习--把骑士想成马背上的骑士,有助于把它和它的跳跃动作联系起来。

在《Spelunky》中,由于一些原因,洞穴的主题似乎很合适。首先,我已经决定玩家将朝下走,走向出口,因为让玩家掉下去比生成一条他们可以爬上去的路更容易。洞穴、地牢和其他自然或废墟环境也很适合视频游戏,因为它们很容易被塑造成几乎任何形状的关卡而不显得格格不入。当你用算法生成关卡时,这就更有价值了,因为你无法预料它们会是什么样子。虽然把游戏设置在比如说一栋纯洁的办公楼里是可能的,但布局的僵硬和重复性很快就会惹人厌烦,并对角色的移动方式造成限制。最后,我想给玩家提供特殊的装备,这样他们就可以创造自己的道路,而像绳子、炸弹和镐头这样的探矿工具自然是最适合的。

只要你的主题与你的规则一致,它在现实生活中是否完全合理并不重要,一个意大利裔美国水管工从乌龟手中拯救蘑菇王国的故事似乎很超出现实,但在玩了几分钟的《超级马里奥兄弟》后,我们开始接受这样的事实:吃蘑菇能让我们变大,花能让我们扔火球,踩乌龟会跳出他们的龟壳。考虑到人类适应新环境的速度,我的确可以把《Spelunky》设定在一个用爆炸企鹅摧毁奶酪蛋糕的世界里,但由于已经有那么多东西需要玩家去理解,也有那么多东西需要我去设计,所以从一个观众和我都认可的环境出发是很有意义的。这也是我开始用Game Maker制作平台游戏时使用的理由——用熟悉的东西作为坚实的基础来学习新的东西。

Spelunky是我迄今为止开发最简单的项目,也是最受欢迎的项目,我相信这是因为关键元素--主题、随机关卡生成和可破坏的地形--他们在一起没有阻力,没有任何一者是为其他元素妥协的,每一个部分都会增强其他部分的表达。

我想起了宫本茂对好点子的定义:"一个好点子不是只解决一个问题,而是能同时解决多个问题",一旦这个好点子到位,工作就变成修补漏洞和增加内容。新的想法要么只需稍加修改就能融入现有的模式,要么很快被否定。换句话说,Spelunky从早期阶段就开始自己设计自己。

随机关卡生成

当我着手创建Spelunky的关卡生成系统时,我以我以前roguelike原型的关卡生成系统作为基础。在那个游戏中,每个关卡都只是一个简单的网格房间,这极大地简化了关卡的生成,因为从一开始你就知道每个房间在哪里--你不需要担心一个房间是否会与另一个房间重叠,或者如何连接它们。Spelunky的每个关卡都是由4x4的房间网格组成,每个房间都是由10x8的瓦片构成。此外,《Spelunky》有四个不同的区域:矿区、丛林、冰洞和寺庙。每个区域都被分成四个级别,游戏中共有十六个级别。

我有几条生成关卡的规则: 1.关卡的起点是关卡顶部的入口门,终点是关卡底部的出口门。 2.必须有一种方法可以在不使用炸弹、绳子或任何特殊物品的情况下从入口到达出口(不在这条路上的东西可以用墙隔开或以其他方式无法进入)。 3.关卡生成器必须尽力不创建任何玩家可能被卡住,必须使用物品才能出来的地方。(如果这样的地方是在关卡生成后通过地形破坏而产生的,那就没问题)。 4.尽量使房间的边缘难以察觉。(但别太担心)。

游戏的首要任务是确保从入口到出口至少有一条无需使用炸弹、绳子或其他特殊设备就能穿越的路径,这使得获胜不那么依赖运气,减少了被卡住的可能,并使玩家可以将炸弹和绳子保存起来,而不是为了通过系统生成的糟糕的关卡。一个名为"scrLevelGen"的脚本开始时会在网格顶行的四个房间中挑选一个,并将其标记为"入口"。该算法通过在网格上随机地左右移动并随机地或在碰到边缘时掉下来,生成一条从入口到出口的路径。算法没有走过的房间会被分配一个数字 "0",而它走过的房间被分配一个大于"0"的数字,这让系统知道一个房间是否在路径上,以及它是否是一个左右两边都有开口的房间("1"),一个底部有额外开口的房间("2"),或者一个左右和顶部都有开口的房间("3")。在我的脑子里,我把这些分别看作是正常的房间、下降的房间和登陆的房间。在一个"2"在另一个"2"上面的情况下,最下面的房间在上面也会有一个开口。在底层行中,算法会停下来,并将它停下来的房间标记为"出口"。

[0][X][1][2]
[0][0][2][3]
[2][1][3][0]
[3][1][X][0]

在scrLevelGen走过之后的样本关卡,创建一条路径。

不在路径上的房间(零)被指定为"侧室",它们的决定性特征是,如果不破坏墙壁,玩家不一定能到达这些地方--它们可以被完全封闭。同样,可破坏地形的一个好处是,它使随机关卡的生成更容易,因为我们只需要担心从入口到出口是否有一条清晰的路径。如果路径边缘的开口恰好与侧面房间边缘的开口相连,那就很好,但如果没有也没关系,对玩家来说,最终与墙壁相接的开口将只是看起来它们一开始就是墙壁。

路径设置完毕后,每个房间都会运行一个名为"scrRoomGen"的脚本,用瓦片构建房间。首先,它从一组六到十二个模板中随机选择一个房间模板,这取决于房间的类型。模板基于诸如 "基本房间"、"低天花板"、"梯子"、"上层平台 "或 "下面的宝藏 "等主题(这些名称取自源代码中的注释),并在脚本中由一长串字符定义。例如,这里有一个来自Mines的模板。

00000000110060000L040000000P110000000L11
0000000L11000000001100000000111112222111

这个字符串没有什么意义,除非你在每第十个字符后加上回车,把它变成这样。

0000000011
0060000L04
0000000P11
0000000L11
0000000L11
0000000011
0000000011
1112222111

现在,至少,它是一个房间的形状。在这种形式下,房间几乎看起来像一个roguelike关卡,每个角色都代表游戏中的某些东西。0是空的,1是基本的墙,L是梯子,P是一个有木头平台横切的梯子,4是一个可以水平推动的石块。2有50%概率是墙,50%的概率是空的。一旦你知道每个字符代表什么,就很容易看出这是一个房间,右边的梯子通向一个被石块堵住的小通道。因为有2,所以很有可能会有一个向下的开口,但也可能是平地。

然后在脚本中,这些字符被转换为瓦片图形。

漂浮在半空中的"6"并不代表一张牌,而是一组5x3的牌,我称之为"块",它从10张牌中随机选择一张。一个大块可能看起来像这样。

01110
02220
00000

这是一个三块瓦片宽的平台(1的),底部可能有一些杂牌(2的)伸出来。一旦程序将房间里的"6"替换成这一大块,它就看起来像这样。

0000000011
0001110L04
0002220P11
0000000L11
0000000L11
0000000011
0000000011
1112222111

块有两个主要种类:悬挂在空中的块和坐落在地板上的块。也有一些特殊的种类,比如在丛林中,有一些挂着藤蔓的块。这些较小的瓦片分组的目的是在一个房间内提供进一步的随机性,使我能够用相当少的房间模板感觉上好像创造出很多种类。

一旦scrRoomGen完成了它的工作,就轮到一个叫做"scrEntityGen"的脚本生成怪物、陷阱、物品和宝藏了。这个脚本检查每个瓦片,并决定是否在瓦片上或周围生成一个实体。例如,它将检查地砖上方是否有一个空位,然后掷骰子决定是否在那里生成一个怪物。物品箱、宝箱、宝石和金子偏好在凹槽中产生,凹槽是一个空的瓦片,在四个方向中的三个方向都有墙壁环绕。按照这种方式,关卡中充满了所有致命的障碍和诱人的奖励,使游戏变得有趣。

有人问我是如何计算出Spelunky中怪物、陷阱和物品产生的概率的,事实是,这并不是一门精确的科学--需要大量的试验和错误,这可能是一种解脱,也可能是一种疯狂,取决于你如何看待它。通常情况下,我发现最好从一些粗略的数字开始,如1/10、1/20、1/50或1/100,然后只是向上和向下调整,直到他们感觉刚好。

以源代码中的这块 "if "语句为例,

    if (rand(1,60) == 1)
    instance_create(x, y-16, oManTrap);
    else if (rand(1,60) == 1)
    instance_create(x, y-16, oCaveman);
    else if (rand(1,120) == 1)
    instance_create(x, y-16, oFireFrog);
    else if (rand(1,30) == 1)
    instance_create(x, y-16, oFrog);

当游戏在丛林中找到一块尚未被任何东西占据的地块,并且不在商店周围,周围也没有怪物的地方时,就会运行这段代码。在该区域合适的地砖上,有1/60,或大约1.67%的机会产生螳螂,否则有1/60的机会产生穴居人,否则有1/120的机会产生火蛙。最后,如果这些都没有产生,那么就有1/30的机会产生一只普通的青蛙。

它的要点是,青蛙很多,螳螂和穴居人以"平均"、"正常"的数量出现,而火蛙则相当罕见(大约是穴居人的两倍,是普通青蛙的四倍)。这个要点比数字本身更重要,1/65的比例比1/60的比例更能催生穴居人吗?这可能不值得花时间去研究,即使研究是可能的。我唯一需要了解的是,在玩了很多次游戏之后,1/60似乎是合理的。

Spelunky中的随机关卡算法是我喜欢的那种编程的完美例子,是我缺乏对编程的热情导致了我的想法,因为我不想做更复杂的事情。这个系统并没有创造出最自然的洞穴,玩家很快就会开始识别出某些重复的地形,甚至可能感觉到关卡是在一个网格上生成的,但有了足够的模板和随机变异,仍然有很多变化。更重要的是,它创造了有趣的、吸引人的,不容易卡住的关卡,在制作沉浸式的游戏体验时,有些东西比现实更重要。

TIGSource

2008年的夏天里,Spelunky的源代码始终伴随着我,就呆在我随身携带的MacBookPro的WindowsXP分区里,这个游戏完全是秘密的——在发布Aquaria之后,拥有完全属于自己的东西感觉很棒。 到了八月,我开始感觉到压力,我也许制作了一些很酷的东西,也许不。这就是秘密工作的问题——没有其他人的评价,你可能做了个坏东西,但是在无人的真空里你以为它很好。我也有另外一种感觉,如果我不发布Spelunky,其他人会抢先发布一个platform/roguelike混合游戏,平台游戏是独立开发者的心头好,roguelikes也日渐流行,这只是时间问题。

由于《Spelunky》仍然很buggy(bug很多),而且缺乏我想添加的功能,所以我对是否正式发布犹豫不决,但我知道有一个地方,我可以先向一小群独立游戏开发者和爱好者展示它——TIGSource。

我与TIGSource的关系始于2005年,即在发布Aquaria和Spelunky之前。当时我正处于一个低潮期--伯克利大学把我扔到社会上,我获得了计算机科学学位,但却没有欲望和精力去编程;我在大四的时候和我的长期女友分手,因而在一门自学的编程课程中无法专注,而我本来打算用这门课程来制作游戏的;我的长期游戏开发伙伴乔恩·佩里(Jon Perry)已经失去了对视频游戏的兴趣,而是专注于他的电影学位和其他爱好。我很累,也很孤独。

大约在这个时候,TIGSource的创始人乔丹·马格努森(Jordan Magnuson)就我和乔恩制作的免费游戏采访了我,在采访中我表达了对于成为职业的游戏开发者的悲观态度。

乔旦:我记得你曾经有过这样的想法,以做游戏为生......这个想法还在吗,还是你打算做其他的事情来谋生?

我:啊,嗯......嗯,在大学里我想我对游戏行业有点厌倦了。我觉得这对有创造力的人来说很困难,大多数人都想成为席德梅尔,或沃伦·斯佩克特,或宫本茂。但我想,如果我进入游戏行业,我得做多少个海绵宝宝的游戏才能做我想做的事?而靠独立游戏谋生是很难的。我想这和任何行业一样:你必须找到合适的人一起工作。说实话,大学也让我疲惫不堪,在尝试艺术、做游戏、学习课程、保持关系、出去玩和认识新朋友之间......如果你想成为一个游戏程序员,你必须真正热爱编程。大学毕业后,我不确定我是否真的喜欢,而且你不能仅仅作为一个设计师就跳入游戏行业。

在我采访了Jordan之后,TIGSource成为我每天都会冲浪的一站。在此之前,我所熟悉的唯一游戏开发社区是Klik&Play社区,在阅读了TIGSource之后,我意识到K&P社区只是独立游戏宽阔大潮旁边的一个小水坑。独立游戏人们都很熟悉,通常人们在非常小的团队中制作游戏,在开发过程中扮演多种角色,并在传统的出版商体系之外发布游戏。但是,在乔恩和我发布了最后一款Klik游戏--一款名为"永恒的女儿"的幻想平台游戏之后,我觉得我们在利用这些工具所能做的已经到了上限。在技术层面上,我们已经把Klik&Play的后继者Multimedia Fusion(MMF)推向极限--《永恒的女儿》的最终源文件是Jon为解决MMF的许多错误和缺乏功能而开发的复杂的变通方案。Klik社区也在那个时候停滞不前了,也许是因为它是一个如此有限的软件集的社区,当工具达到极限时,社区也就到了极限。长期成员要么转到主流游戏工作室制作游戏,要么完全离开游戏去追求其他兴趣。相比之下,在更广泛的独立游戏世界中,人们使用各种工具,而且没有这种限制,他们可以把他们的爱好变成职业。

不幸的是,在我们采访后不久,乔丹就因为个人原因被迫放弃了TIGSource,周围虽然还有其他的独立游戏社区,如Bytten和Game Tunnel,但它们都非常缺乏Jordan诚实的、有时是尖锐的风格——它以严厉的批评激怒了开发者,并直面社区的挑衅。这是一种原始而充满激情的声音,让我想起了Klik社区的全盛时期,让我怀念起那段生活,并对游戏的未来感到兴奋。我已经在考虑向乔丹要一个网站编辑的职位,但既然他要放弃,我就给他发了电子邮件,询问我是否可以接手他的工作。

据乔丹说,他认为没有谁比我更合适管理这个网站了。我立即开始工作,对网站的光秃秃的Blogspot模板进行了视觉改造,并保持新闻更新。这对我来说是最好的时机,因为我缺乏一个有价值的项目来倾注我的心血,并因此而感到不安。

在开发Aquaria的过程中,我也经常在TIGSource上工作,通过这个网站,我和Alec与其他独立游戏人成为朋友。这群人感觉就像一个家庭,我们一起努力定义一种"独立精神",它存在于大预算互动电影和低预算休闲克隆产品之外。在为Aquaria工作,为TIGSource写游戏,以及与通过网站的各种人争论什么是"独立游戏"之间,我全身心地沉浸在独立游戏社区。

当我准备展示Spelunky的时候,数千名活跃的会员已经将TIGSource变成了一个充满活力的独立游戏开发者和爱好者的社区,他们可以在这个论坛上分享他们的游戏,建立Jam,并参与比赛。在TIGSource论坛,或者叫做"TIGForums"中,我为版主和发帖量高的会员创建了一个隐藏的子论坛。正是在这里,我决定首次与社区的一小部分人分享《Spelunky》。为了避免期望值过高,我把它称为"Spelunky 0.8 BETA"。

从社区得到的反馈是迅速而丰富的,仍有许多错误需要解决,但随着人们对游戏的深入了解,一种兴奋感油然而生。在这个主题站的第一页,一个玩家感叹道,"多么激动人心的时刻。当一只蜘蛛扑向我的时候,却被陷阱里的箭射死了。"我也同样兴奋,经过几个月的默默工作,游戏得到了很好的回应,这让我感到很欣慰,滚动浏览这个主题就像阅读真正的探险家彼此之间的分享,我喜欢它。

在测试者热情的刺激下,我飞快地修复错误并增加内容,这反过来又增加了他们的热情。这种积极的反馈循环正是我所希望的,我在接下来的三个月里努力工作,准备正式推出这个游戏。

Shopkeeper

在这个疯狂的时期,我添加的最重要的东西是玩家可以购买物品的商店。商店几乎存在于每一种游戏中,为玩家提供了一种花费游戏中的货币和定制他们的角色的方法。在一些游戏中,它们也被用作"减速带"——迫使你花钱购买前进所需的装备。在《Spelunky》中,商店不会减慢你的速度,但它们是造成新老玩家死亡的最大原因之一。

店主已经成为Spelunky中最臭名昭著的角色,同样被他的顾客所惧怕和爱戴。他的商店100%出现在第2关,在以后的关卡中出现的几率越来越小(第3关2/3,第4关2/4,第5关2/5,以此类推),它是你探索路上最稳定的救命物品来源。鉴于这些物品的实用性,它们的价格也很高,并且随着等级的提高而增加。一袋额外的炸弹将花费2500美元以上,而像喷气背包这样更奇特的工具可以达到数万美元。玩家很少有足够的钱来购买商店里的一件物品,有时什么都买不起。钱也被用来作为玩家的分数,所以购物狂欢会损害你在排行榜上的位置。

购买你想要的物品的难度以及对你的分数造成的后果产生了强烈的诱惑,让你想从商店里偷东西。在大多数游戏中,在购物时你只有两个选择:买东西或离开。处理偷窃问题的复杂性超出了那些游戏的范围--不仅需要增加机制来允许玩家带着物品离开而不付钱,而且还必须处理玩家偷窃的道德后果,让玩家犯罪可能不符合玩家应该成为英雄的叙事方式。

但是,如果roguelike游戏中的一些行动看起来是可能的,那么它就应该是可能的。这是一个流派,在正统roguelike中,你可以因暴食而受到惩罚,那么你也可以从商店里偷东西!这也是一个流派。在NetHack中,有很多方法可以做到这一点。最直接的方法是带着未付款的物品离开商店,但只要你拿起东西,店主就会立刻堵住门。由于他们出售各种有用的物品和装备,他们自己也相当难缠--NetHack对每个怪物的难度有一个数字衡量,而店主在游戏中的难度值是15,可能是57,他在可怕程度上介于吸血鬼领主和坑道恶魔之间,在游戏初期攻击店主是一种自杀行为,但也有其他非暴力的抢劫方式,比如把他们传送走,把自己传送走,挖开商店的墙壁,或者训练你的宠物替你把物品带到外面,不太正统的行窃策略包括将店主变成一个较弱的怪物,然后将其杀死,或者让一个凝胶状的怪物吃掉物品,然后在它离开商店后杀死怪物。

即使一个人可以很容易地买得起游戏中的每一件物品,但这只是人类的天性,看看你是否可以逃脱不良行为,作为一个孩子的父亲,我可以证明这一点。在安全的环境中测试界限是婴儿成长为自信和独立的成年人的方式,以类似的方式,精心设计的视频游戏可以帮助人们成长为自信和独立的玩家。

我注意到没有经验的玩家和有经验的玩家的区别之一是,新玩家在第一次玩游戏时更加胆小。失败的想法让他们感到焦虑,而有经验的玩家会尽快寻找新游戏的界限,即使这涉及到一次又一次的死亡。他们明白,这不仅是一种更有趣的游戏方式,而且他们从中获得的知识将帮助他们在长期内取得成功。

理想情况下,我希望《Spelunky》的世界充满了高风险/高回报的场景,因为这些场景对那些试图寻找游戏边界的玩家来说最具诱惑力。在这些场景中,商店提供了一些最高的风险和回报,因为抢劫商店可以让你获得大量的免费物品,但也会让你的脸在之后的每个商店里贴上通缉海报。不仅如此,在每个连续的关卡的出口处都会出现一个敌对的店主。Spelunky的店主也比游戏中的其他怪物强得多,他不仅不惧怕被鞭打,而且跑得很快,可以轻易地用猎枪从远处杀死你,如果他在近处抓住了你,就会把你扔到墙上。

但是,尽管他很强,店主有一套相当简单的行为。当他活着的时候,有四个主要的"状态",IDLE是一种休息状态,他站在那里不动,看着他的店。

当玩家在他的商店里拿起一件物品时,他就会进入"跟随"状态,他会走到玩家身边,并紧紧跟随。他的跟随是为了提供帮助还是出于怀疑,由玩家自己想象。我加入这个状态是因为在最初的测试中,当他呆在他的柜台前时,太容易偷走东西了。

ATTACK是店主的愤怒状态,当他积极追捕玩家的时候,在Spelunky的世界里,他是法官、陪审团和刽子手。如果他进入这个状态时还没有携带霰弹枪,他就会掏出一把。但他只能拔出一把枪,所以如果你设法从他手中夺走猎枪,他就会变得没有武器(但仍然很危险)。

PATROL是当玩家作为罪犯被通缉时取代IDLE的一种状态,在这种状态下,店主会拿着猎枪来回走动,直到玩家走近,然后他将进入攻击状态。

在攻击状态下,店主相当善于寻找玩家,尽管底层AI没有什么特别之处。寻路是一个背后有很多研究的领域,人们用各种算法来让非玩家角色(NPC)从一个地方到另一个地方。然而,对于店主来说,我的简单解决方案就很好用,他的攻击AI可以这样总结:

每隔一段时间,就转身朝向玩家。

每隔一段时间,如果玩家离得够近,而且我有猎枪,就用猎枪向他们射击。

如果玩家在我下面,并且在水平方向上离我不太远,就什么都不做。

否则,如果在我的正前方有一个障碍物,就跳。

否则,如果玩家在我上面,就跳。

基本上,当玩家处于相同的高度或高于店主,或离他足够远的地方向左或向右,他喜欢跳...很多。他跳跃的力度也是随机的。当我第一次编码时,我不确定这将如何工作,但事实证明,在随机的高度上大量跳跃是一种有效的方法,可以绕过障碍物,在墙上找到小缝隙来穿过。反复的跳跃也使他的动作显得狂躁和不可预测,增加了他的危险系数,并与他愤怒和暴力的性格相辅相成。这是一个很好的例子,说明主题意象如何能掩盖简单的机械性。

Feedback Loop

2008年12月21日,我觉得这个游戏终于可以让更多人看到了,我把它公开发布在TIG论坛,"提交给午夜协会批准,我称这个故事为......Spelunky!这是我最新发布的游戏,也是我的第一个Game Maker游戏"。 公开发布的消息炸开了锅,该主题迅速成为TIGSource论坛上浏览量最高的主题(今天它是浏览量第五的主题,有近130万次浏览)。对该游戏的反应总体上是非常积极的,但也有令人惊讶的争议。最初,人们很可能是因为我在网站和Aquaria中的角色而被吸引到这个主题,但事实上,几个月后它一直在升温,这要归功于人们对游戏的强烈意见,好的和坏的。几乎在第一时间,就出现了三个声势浩大的阵营:爱这个游戏的人,想要爱这个游戏但是失败的人,以及已经认为这个游戏被高估的人。这些群体相互之间激烈争吵,创造了一些戏剧性的事件,再加上其他地方的博客中的一些正面报道,使得该主题有了稳定的访问者。

那些想要爱上《Spelunky》的玩家被它的核心理念所吸引--一个带有随机关卡的平台游戏,但却被游戏的高难度、复杂的控制、道具的限制性,或者是无敌的鬼怪等因素而放弃了。这些障碍共同创造了令人沮丧的体验,玩家在做相对简单的事情时,会与控制装置搏斗,最终被杀死,要么是因为他们按错了按钮,要么是因为摸索的过程拖延了他们,以至于鬼魂出现并追杀他们。

最初的爆炸性增长的反馈令人措手不及,这感觉就像你与一些亲密的朋友进行的私人谈话突然被打开到了整个世界。如果你做得很好,你会得到大量的赞美,但不管你的游戏有多棒,你也会遇到那些不满意的人。互联网是这样的,你不能指望他们是公平的,或理性的,你甚至不能指望他们会喜欢视频游戏。

不幸的是,我们很容易在积极的评论中快速膨胀,却又沉入消极的评论中。在一个有正面评论和负面评论的主题中,通常是负面评论最突出,就像电线上生锈的倒刺。如果你是一个小的开发者,没有一个大的团队来缓冲,这一点尤其使你感到脆弱。

在早期的大量反馈中,有一条《Spelunky》的评论仍然让我印象深刻,他善于将他的挫折感回馈给我。他说:"德里克,我讨厌你这该死的游戏,"他说。"虽然这是我见过的第一个roguelike/platformer的实现,这令人敬佩,但从这个游戏看来,你的难度做的很糟糕。"虽然他和我都认为玩家的死亡应该总是归因于他们自己的错误,但我们对什么是真正构成玩家的错误有不同意见,在他看来,由于他自称在电子游戏方面缺乏"自然技能"--包括良好的灵活性和反应能力--而导致的死亡是游戏的错误,而不是他的。"感觉被游戏欺骗和侮辱并不有趣"他叹道,"除非一个人被洗脑或有精神障碍。"当我在游戏中死亡时,这很令人沮丧,但它使我想继续尝试和改进,对他来说,这是种侮辱。

被告知你在任何事情上都很差劲,不管它是真是假,这类贬义词使接下来的批评更难听进去,当时我只希望这个人把他缺乏的自然技能带走,让我一个人呆着。不过,有几个原因使我没有忽视他。第一个原因与埃利·威塞尔的一句格言有关:"爱的反面不是仇恨,而是冷漠"。很明显,驱使他愤怒的是热情,我宁愿阅读关于如何修复我的游戏的长篇大论,而不是简单地凝视一个空洞的帖子。第二个原因是,最重要的是我想让我的游戏尽可能地好。鉴于我的游戏对我意味着什么,让一些贬低我的言论妨碍我做好工作似乎很愚蠢。

这并不是说每个反馈都是正确的,也不是说所有的反馈都同样有用。怎么可能呢,因为有那么多的反馈是相互矛盾的。但要确定什么是正确的,什么是不正确的,重要的是要倾听。单独的反馈可能看起来毫无价值,但当放在其他反馈旁边时,它就开始有一些意义了。就那个愤怒的玩家而言,虽然我不同意他对技能水平的看法,也不同意他坚持要求我为像他这样的玩家提供难度选项,但我觉得游戏太难的想法是有一定道理的,因为其他更有水平的玩家也有同样的想法。然而,真正的原因是什么呢?

在我思考这个问题的时候,我开始着手修复错误,并实施其他玩家提出的看起来不错的建议,比如减少控制的复杂性和执行动作所需的步骤。有趣的是,我从那个愤怒的玩家的帖子中注意到,在他愤怒的同时,他也在取得进展,进入了后面的关卡,并最终打败了游戏。这让我相信,难度本身并不是问题,而且我没有在游戏中加入简单模式是正确的,因为这对像他这样的玩家来说会成为一个不必要的拐杖。真正的罪魁祸首是小麻烦,它们使玩家与游戏之间的互动更困难。Spelunky确实随着每次更新而变得更容易,但其方式是改善核心体验,而不是淡化它。所以在某种意义上,那个愤怒的玩家是对的。这款游戏太难了。但不是因为他或我所假设的原因。如果我们谈论的是网球游戏而不是《Spelunky》,就好像这位玩家要求我把球网移开,因为他在击球时遇到了困难,我们都没有意识到真正的问题是我给他的球拍断了线。

另一种方法是,把解释反馈想成是医生在诊断一个病人。病人把他或她的症状带给医生("我的肚子疼!"),甚至可能提供一个可能的解决方案("我认为这可能是流感!")。在这种情况下,医生要么否定病人症状的正确性,要么盲目接受他们所说的症状,这将是一个坏主意。和病人一样,玩家往往最关注的是他们对问题的感受,而不是问题的原因。医生和游戏开发者,凭借他们的经验和领域知识,需要提出问题,进行测试,并排除各种可能性,以锁定真正正确的解决方案。

游戏开发者往往也会从其他游戏开发者那里得到反馈,但这种反馈也可能是误导。另一个游戏开发者可能能阐明你的普通玩家无法说出的问题,但他们对开发过程的理解可能导致他们只见树木不见森林,纠结于大多数玩家不会注意到的细枝末节。如果开发者是你的朋友或社交圈里的人,就更糟糕了,因为它增加了一层感情,而这种感情会背叛事实。我经常感到有一种诱惑,就是建议另一个独立开发者解决这个或那个小问题,而真正的问题是更根本的问题,可是当你知道他们有多努力时,你很难说出从头再来的建议。

不管他们与我的关系如何,每个玩过《Spelunky》的人都对《Spelunky》是什么以及它应该是什么带来了意见。无论我是在为自己的设计选择辩护,还是在执行别人的建议,他们的反馈都促使我衡量《Spelunky》--让我在一些地方重新考虑,在另一些地方坚定了决心。事实是,发展一个愿景永远不会真正结束。当我们想到"愿景"的时候,我们往往会想到一些感觉是结晶的、坚硬的东西,而事实上,它是一些更湿、更软的东西。随着时间的推移,这种湿漉漉、软绵绵的愿景可以被创作者和观众培养成更坚实的东西,但这需要时间。当我制作《Spelunky》时,我完全是在当下。就像我学校笔记本上的许多涂鸦一样,它一开始是在空白处涂涂画画的小东西,很轻率,很快就占据了整个页面。因此,我对我所做的事情的后果没有太多的理解,只知道我做的事情是否感觉上“正确”,我的很多决策都是本能的,是在多年的游戏思考中建立起来的。只有在观众参与之后,我才开始理解我自己设计背后的原因。